/**
 * 
 */
package soa.security.mgr.service;

import soa.security.domain.*;

import java.util.List;

/**
 * @author Cre.Gu
 *
 */
public interface TreeMgrService {

	List<LdapTree> regionTree();

	List<LdapTree> organizationTree();

	List<LdapTree> organizationRsTree();

	List<LdapTree> departmentTree();
	
	List<LdapTree> oneOrgTree(String organizationId);

	List<LdapTree> personInOneOrgTree(String organizationId);

	/**
	 * 指定机构下的部门树
	 * 
	 * @param organizationId
	 * @return List<LdapTree>
	 * 
	 * @author Cre.Gu at 2015年5月29日
	 */
	List<LdapTree> deptInOneOrgTree(String organizationId);

	/**
	 * 指定机构下的部门树，过滤指定部门
	 * 
	 * @param organizationId
	 * @param departmentId
	 * @return List<LdapTree>
	 * 
	 * @author Cre.Gu at 2015年5月29日
	 */
	List<LdapTree> deptInOneOrgTree(String organizationId, String departmentId);
	
	List<LdapTree> accountInOneOrgTree(String organizationId);
	
	List<LdapTree> accountInOneOrgTree(String organizationId, String accountId);

	List<LdapTree> deptInOneOrgCheckTree(String organizationId,
			List<Department> checked, String departmentId);
	
	
	List<LdapTree> accountInOneOrgCheckTree(String organizationId, List<Account> checked);
	
	/**
	 * 获取指定的特殊admin
	 * @return List<LdapTree>
	 */
	List<LdapTree> adminTree(String dn, String bid, String text);

	List<LdapTree> personInOneOrgCheckTree(String organizationId,
			List<Person> checked);

	List<LdapTree> subGroupInOneOrgCheckTree(String organizationId,
			String filterId, List<Group> checked);

	List<LdapTree> groupInOneOrgCheckTree(String organizationId,
			List<Group> checked);

	List<LdapTree> positionInOneOrgCheckTree(String organizationId,
			List<Position> checked);

}
